<?php

namespace App\Http\Controllers\Api;

use App\Models\Shop\Account;
use App\Models\Shop\Ticket;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Tymon\JWTAuth\Facades\JWTAuth;

class AccountController extends Controller
{
   /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
   public function index()
   {
//      $user = JWTAuth::parseToken()->authenticate();  //取其id为$user->id
      //所有优惠券
      $tickets = Ticket::where('status', 1)->orderByDesc('created_at')->get();
      //当前用户优惠券
      $accounts = Account::with(['tickets' => function ($query) {
         $query->where('status', 1);
      }])->where('user_id', 1)->first();
      //判断优惠券是否过期
      foreach ($accounts['tickets'] as $ticket) {
         if ($ticket->valid_end_time <= Carbon::now()) {
            DB::table('tickets')->where('id', $ticket['id'])->update(['status' => 2]);
         }
      }

      return response()->json(compact('tickets', 'accounts'));
   }

   /**
    * Store a newly created resource in storage.
    * 领取优惠券
    * @param \Illuminate\Http\Request $request
    * @return \Illuminate\Http\Response
    */
   public function store(Request $request)
   {
      $user = JWTAuth::parseToken()->authenticate();  //取其id为$user->id
      $account = Account::where('user_id', $user->id)->first();
      $result = $account->tickets()->create($request->ticket_id);
      if ($result) {
         $info = ['status' => 1, 'msg' => '领取成功~'];
         return response()->json($info);
      }
   }

   /**
    * Display the specified resource.
    *
    * @param int $id
    * @return \Illuminate\Http\Response
    */
   public function show($id)
   {
      //
   }

   /**
    * Show the form for editing the specified resource.
    *
    * @param int $id
    * @return \Illuminate\Http\Response
    */
   public function edit($id)
   {
      //
   }

   /**
    * Update the specified resource in storage.
    *
    * @param \Illuminate\Http\Request $request
    * @param int $id
    * @return \Illuminate\Http\Response
    */
   public function update(Request $request, $id)
   {


   }

   /**
    * Remove the specified resource from storage.
    *
    * @param int $id
    * @return \Illuminate\Http\Response
    */
   public function destroy($id)
   {
      //
   }

}
